import { fontSizeCalc, handleErrCode, loginWxampForWechatFun } from "../../utils/util";
// pages/home/index.ts
Page({

  /**
   * 页面的初始数据
   */
  data: {
    access: {} as any,
    name: "正在登录...",
    modal: false,
    currentUser: {},
    isWechatWxmpSubscribe: null,//公众号绑定状态
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'), // 如需尝试获取用户信息可改为false
    functionList: [],
    tagSize: fontSizeCalc(16) + 'rpx',
    allList: [
      {
        name: "新媒连心桥",// 功能名称
        icon: "icon_share_bold.png",// 功能图标
        access: ['showPromotion'],// 功能权限
        methods: "jumpToPromotion",// 功能跳转函数
        show: false,// 功能是否显示
      },
      {
        name: "线索征集",// 功能名称
        icon: "icon_plan_bold.png",// 功能图标
        access: ['showCues', 'showCuesActive'],// 功能权限
        methods: "jumpToReportClues",// 功能跳转函数
        show: false,// 功能是否显示
      },
      {
        name: "主动报送",// 功能名称
        icon: "icon_sign_in_bold.png",// 功能图标
        access: ['showCues', 'showCuesTopic'],// 功能权限
        methods: "jumpToActivelyReport",// 功能跳转函数
        show: false,// 功能是否显示
      },
      {
        name: "收录库",// 功能名称
        icon: "icon_collect_bold.png",// 功能图标
        access: ['showCuesAdopt', '线索上报x主动报送x选题列表x收录线索'],// 功能权限
        methods: "jumpToCollectionLib",// 功能跳转函数
        show: false,// 功能是否显示
      },
      {
        name: "宣传刊播",// 功能名称
        icon: "icon_list_bold.png",// 功能图标
        // access: ['showPublicity', '宣传刊播x创建'],// 功能权限，取消显示了
        access: [],// 功能权限
        methods: "jumpToPublish",// 功能跳转函数
        show: false,// 功能是否显示
      },
      {
        name: "宣传刊播",// 功能名称
        icon: "icon_list_bold.png",// 功能图标
        access: ['showPublicity'],// 功能权限
        methods: "jumpToPublish",// 功能跳转函数
        show: false,// 功能是否显示
      },
      {
        name: "数据统计",// 功能名称
        icon: "icon_analysis.png",// 功能图标
        access: ['showAnalysis', '新媒连心桥x列表x管理员'],// 功能权限
        methods: "jumpToAnalysis",// 功能跳转函数
        show: false,// 功能是否显示
      },
    ]
  },
  /**
   * 钩子函数登录
   *
   * load的时候获取用户信息
   */
  onLoadCurrentUser() {
    const { globalData: { access, currentUser } } = getApp();
    let { allList: newList } = this.data;
    // newList.filter(item => {
    //     return item.access.filter(acc => access[acc]).length > 0
    // })
    console.log(access);
    newList.forEach(item => {
      item.show = item.access.filter(acc => access[acc]).length > 0
    })
    console.log(newList);
    if (currentUser) {
      this.setData({
        access,
        functionList: newList.filter(item => item.show),
        currentUser,
        isWechatWxmpSubscribe: currentUser.isWechatWxmpSubscribe,
        name: currentUser.name,
      })
    }
  },

  /**
   * 钩子函数
   * 获取 当前用户 state
   *
   */
  onLoadUserState() {
    const { globalData: { currentUserState } } = getApp();
    let _that = this
    if (currentUserState) {
      _that.setData({
        currentUserState: currentUserState,
      })
    }
  },

  /**
   * 通过内置方法获取用户信息
   */
  // getUserProfile() {
  //   // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
  //   wx.getUserProfile({
  //     desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
  //     success: (res) => {
  //       console.log(res)
  //       this.setData({
  //         currentUser: res.userInfo,
  //         hasUserInfo: true
  //       })
  //     }
  //   })
  // },
  updateCurrentUserState(state) {
    const currentUser = wx.getStorageSync('currentUser')
    this.setData({
      isWechatWxmpSubscribe: currentUser.isWechatWxmpSubscribe,
    })
  },
  /**
   * 点击登录
   */
  onClickLogin(boo) {
    // 登录过了，这里要做一个判断处理
    // const {globalData: {isReader,isLogin}} = getApp();
    boo && wx.showLoading({
      title: '登录中...'
    });
    wx.showNavigationBarLoading();
    //用户登录过期，重新登录
    wx.login({
      success: res => {
        loginWxampForWechatFun(res.code, false, this.updateCurrentUserState);
      },
      complete: (res) => {
        wx.hideLoading();
        wx.hideNavigationBarLoading();
        wx.stopPullDownRefresh()
      }
    })
  },


  /**
   * 菜单点击跳转
   */
  funJump(e: any) {
    const { item = {} } = e.currentTarget.dataset || {};
    this[item.methods] && this[item.methods](item);
  },

  /**
     * 跳转数据统计
     */
  jumpToAnalysis() {
    const access = this.data.access;
    console.log(access);
    if (access.showAnalysis) {
      wx.navigateTo({
        url: '/pages/analysis/index',
      })
      // if (access.新媒连心桥x列表x管理员) {// 管理员
      // }
    } else {
      handleErrCode('暂未开通该服务')
    }
  },
  /**
   * 跳转到新媒连心桥
   */
  jumpToPromotion() {
    const access = this.data.access;
    if (access.showPromotion) {
      wx.navigateTo({
        url: '/pages/promotion/index',
      })
      // if (access.新媒连心桥x列表x管理员) {// 管理员
      //   wx.navigateTo({
      //     url: '/pages/promotionAdmin/index',
      //   })
      // } else {
      //   wx.navigateTo({
      //     url: '/pages/promotion/index',
      //   })
      // }
    } else {
      handleErrCode('暂未开通该服务')
    }
  },
  /**
   * 跳转到主动报送
   */
  jumpToActivelyReport() {
    const access = this.data.access;
    if (access.showCues || access.showCuesActive) {
      wx.navigateTo({
        url: '/pages/activeReport/index',
      })
      // if (access.线索上报x主动报送x配置x需求者) {// 管理员
      //     wx.navigateTo({
      //         url: '/pages/activeReportAdmin/index',
      //     })
      // } else {
      //     wx.navigateTo({
      //         url: '/pages/activeReport/index',
      //     })
      // }
    } else {
      handleErrCode('暂未开通该服务')
    }
  },
  /**
   * 跳转到线索上报
   */
  jumpToReportClues() {
    const access = this.data.access;
    if (access.showCues || access.showCuesTopic) {
      if (access.线索上报x选题计划x配置x需求者) {// 管理员
        wx.navigateTo({
          url: '/pages/cuesAdmin/index',
        })
      } else {
        wx.navigateTo({
          url: '/pages/cues/index',
        })
      }
    } else {
      handleErrCode('暂未开通该服务')
    }
  },
  /**
   * 跳转到宣传刊播
   */
  jumpToPublish() {
    const access = this.data.access;
    if (access.showPublicity) {
      wx.navigateTo({
        url: '/pages/publish/index',
      })
    } else {
      handleErrCode('暂未开通该服务')
    }
  },

  /**
   * 跳转到收录库
   */
  jumpToCollectionLib() {
    const access = this.data.access;
    if (access.线索上报x选题计划x选题列表x收录线索 || access.线索上报x主动报送x选题列表x收录线索) {
      wx.navigateTo({
        url: '/pages/collectLib/index',
      })
    } else {
      handleErrCode('暂未开通该服务')
    }
  },

  /**
   * 显示关注公众号
   */
  wxmpSubscribe() {
    if (!this.data.currentUser.isWechatWxmpSubscribe) {
      this.setData({
        modal: true
      })
    }
  },
  hideModal() {
    this.setData({
      modal: false
    })
  },
  handleClickModal() {
    this.hideModal();
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(option) {
    this.checkWeChatVersion(); // 检测微信版本
    // 登录
    const { globalData: { isLogin } } = getApp();
    if (!isLogin) {// 判断一下是否登录过了
      wx.login({
        success: res => {
          loginWxampForWechatFun(res.code);
        },
      })
    }
    // 手动触发加载
    this.selectComponent('#noticeModal').fetchData();
  },
  /**
   * 检查微信版本是否低于 8.0.58
   */
  checkWeChatVersion() {
    const systemInfo = wx.getSystemInfoSync();
    const wechatVersion = systemInfo.version; // 微信版本号（如 "8.0.58"）
    const minRequiredVersion = "8.0.58"; // 最低要求版本

    if (this.compareVersions(wechatVersion, minRequiredVersion) < 0) {
      this.showUpdateWeChatModal();
    }
  },
  /**
 * 比较版本号（返回 -1 表示当前版本低于目标版本）
 */
  compareVersions(current: string, target: string): number {
    const currentParts = current.split('.').map(Number);
    const targetParts = target.split('.').map(Number);

    for (let i = 0; i < Math.max(currentParts.length, targetParts.length); i++) {
      const currentPart = currentParts[i] || 0;
      const targetPart = targetParts[i] || 0;
      if (currentPart < targetPart) return -1;
      if (currentPart > targetPart) return 1;
    }
    return 0;
  },
  /**
 * 显示更新微信的弹窗
 */
  showUpdateWeChatModal() {
    wx.showModal({
      title: '微信版本过低',
      content: '当前微信版本可能无法正常使用小程序，请升级至最新版本。',
      confirmText: '去更新',
      cancelText: '暂不',
      success: (res) => {
        if (res.confirm) {
          this.navigateToWeChatUpdate(); // 跳转到微信更新页
        }
      },
    });
  },
  /**
 * 跳转到微信更新页面（仅安卓支持）
 */
  navigateToWeChatUpdate() {
    const systemInfo = wx.getSystemInfoSync();

    // 判断系统平台
    if (systemInfo.platform === 'android' || systemInfo.system.toLowerCase().includes('harmonyos')) {
      // Android或鸿蒙系统
      wx.navigateToMiniProgram({
        appId: 'wx7a6fd1f3b10e5e9a', // 微信官方小程序AppID
        path: 'pages/update/index',  // 微信更新页路径
        fail: () => {
          wx.showToast({
            title: '请手动前往应用商店更新',
            icon: 'none',
          });
        },
      });
    } else if (systemInfo.platform === 'ios') {
      // iOS系统
      wx.showToast({
        title: '请前往App Store更新微信',
        icon: 'none',
      });
    } else {
      // 其他未知系统
      wx.showToast({
        title: '请手动检查微信更新',
        icon: 'none',
      });
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // this.onClickLogin(false);// 主动调用登录
    wx.showShareMenu({
      withShareTicket: true,
      menus: [
        'shareAppMessage', // 分享给朋友
        // 'shareTimeline',// 分享到朋友圈
      ]
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.onClickLogin(true);
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      // imageUrl: 'https://cqgxq.ljsyy.net/wxamp-share-cover.png',
      success: (res) => {
        console.log("转发成功", res);
      },
      fail: (res) => {
        console.log("转发失败", res);
      }
    }
    // app.json 的tabBar
    // "tabBar": {
    //     "color": "#777777",
    //         "selectedColor": "#1890ff",
    //         "list": [
    //         {
    //             "pagePath": "pages/home/index",
    //             "iconPath": "image/icon_home.png",
    //             "selectedIconPath": "image/icon_home_selected.png",
    //             "text": "首页"
    //         },
    //         {
    //             "pagePath": "pages/user/index",
    //             "iconPath": "image/icon_user.png",
    //             "selectedIconPath": "image/icon_user_selected.png",
    //             "text": "我的"
    //         }
    //
    //     ]
    // },
  }
})